Welcome![Sign In][Sign Up]
Location:
Search - gif java

Search list

[Internet-Network用Java编写HTML文件分析程序

Description:

Java编写HTML文件分析程序

 一、概述

    

    Web服务器的核心是对Html文件中的各标记(Tag)作出正确的分析,一种编程语言的解释程序也是对源文件中的保留字进行分析再做解释的。实际应用中,我们也经常会碰到需要对某一特定类型文件进行要害字分析的情况,比如,需要将某个HTML文件下载并同时下载与之相关的.gif.class等文件,此时就要求对HTML文件中的标记进行分离,找出所需的文件名及目录。在Java出现以前,类似工作需要对文件中的每个字符进行分析,从中找出所需部分,不仅编程量大,且易出错。笔者在近期的项目中利用Java的输入流类StreamTokenizer进行HTML文件的分析,效果较好。在此,我们要实现从已知的Web页面下载HTML文件,对其进行分析后,下载该页面中包含的HTML文件(假如在Frame中)、图像文件和ClassJava Applet)文件。

    

    二、StreamTokenizer

    

    StreamTokenizer即令牌化输入流的作用是将一个输入流中变成令牌流。令牌流中的令牌实体有三类:单词(即多字符令牌)、单字符令牌和空白(包括JavaC/C++中的说明语句)。

    

    StreamTokenizer类的构造器为: StreamTokenizer(InputStream in)

    

    该类有一些公有实例变量:ttypesvalnval ,分别表示令牌类型、当前字符串值和当前数字值。当我们需要取得令牌(即HTML中的标记)之间的字符时,应访问变量sval。而读向下一个令牌的方法是调用nextToken()。方法nextToken()的返回值是int型,共有四种可能的返回:

    

    StreamTokenizer.TT_NUMBER: 表示读到的令牌是数字,数字的值是double型,可以从实例变量nval中读取。

    

    StreamTokenizer.TT_Word: 表示读到的令牌是非数字的单词(其他字符也在其中),单词可以从实例变量sval中读取。

    

    StreamTokenizer.TT_EOL: 表示读到的令牌是行结束符。

    

    假如已读到流的尽头,则nextToken()返回TT_EOF

    

    开始调用nextToken()之前,要设置输入流的语法表,以便使分析器辨识不同的字符。WhitespaceChars(int low, int hi)方法定义没有意义的字符的范围。WordChars(int low, int hi)方法定义构造单词的字符范围。

    

    三、程序实现

    

    1HtmlTokenizer类的实现

    

    对某个令牌流进行分析之前,首先应对该令牌流的语法表进行设置,在本例中,即是让程序分出哪个单词是HTML的标记。下面给出针对我们需要的HTML标记的令牌流类定义,它是StreamTokenizer的子类:

    

    

    import java.io.*;

    import java.lang.String;

    class HtmlTokenizer extends

    StreamTokenizer {

    //定义各标记,这里的标记仅是本例中必须的,

    可根据需要自行扩充

     static int HTML_TEXT=-1;

     static int HTML_UNKNOWN=-2;

     static int HTML_EOF=-3;

     static int HTML_IMAGE=-4;

     static int HTML_FRAME=-5;

     static int HTML_BACKGROUND=-6;

     static int HTML_APPLET=-7;

    

    boolean outsideTag=true; //判定是否在标记之中

    

     //构造器,定义该令牌流的语法表。

     public HtmlTokenizer(BufferedReader r) {

    super(r);

    this.resetSyntax(); //重置语法表

    this.wordChars(0,255); //令牌范围为全部字符

    this.ordinaryChar('< '); //HTML标记两边的分割符

    this.ordinaryChar('>');

     } //end of constrUCtor

    

     public int nextHtml(){

    int token; //令牌

    try{

    switch(token=this.nextToken()){

    case StreamTokenizer.TT_EOF:

    //假如已读到流的尽头,则返回TT_EOF

    return HTML_EOF;

    case '< ': //进入标记字段

    outsideTag=false;

    return nextHtml();

    case '>': //出标记字段

    outsideTag=true;

    return nextHtml();

    case StreamTokenizer.TT_WORD:

    //若当前令牌为单词,判定是哪个标记

    if (allWhite(sval))

     return nextHtml(); //过滤其中空格

    else if(sval.toUpperCase().indexOf("FRAME")

    !=-1 && !outsideTag) //标记FRAME

     return HTML_FRAME;

    else if(sval.toUpperCase().indexOf("IMG")

    !=-1 && !outsideTag) //标记IMG

     return HTML_IMAGE;

    else if(sval.toUpperCase().indexOf("BACKGROUND")

    !=-1 && !outsideTag) //标记BACKGROUND

     return HTML_BACKGROUND;

    else if(sval.toUpperCase().indexOf("APPLET")

    !=-1 && !outsideTag) //标记APPLET

     return HTML_APPLET;

    default:

    System.out.println ("Unknown tag: "+token);

    return HTML_UNKNOWN;

     } //end of case

    }catch(IOException e){

    System.out.println("Error:"+e.getMessage());}

    return HTML_UNKNOWN;

     } //end of nextHtml

    

    protected boolean allWhite(String s){//过滤所有空格

    //实现略

     }// end of allWhite

    

    } //end of class

    

    以上方法在近期项目中测试通过,操作系统为Windows NT4,编程工具使用Inprise Jbuilder3


Platform: | Size: 1066 | Author: tiberxu | Hits:

[Special Effectsgif

Description: 一个生成GIF格式图形文件的源程序,JAVA
Platform: | Size: 96311 | Author: gjc | Hits:

[Graph programConvertsgifs2VRML.java

Description: 将Gif图象转换成VRML格式 -will Gif images converted into VRML format
Platform: | Size: 2780 | Author: 陈鹏 | Hits:

[GUI Develop生成gif图片的java程序

Description:
Platform: | Size: 17193 | Author: liang.haiqiang@yahoo.com.cn | Hits:

[Graph programConvertsgifs2VRML.java

Description: 将Gif图象转换成VRML格式 -will Gif images converted into VRML format
Platform: | Size: 2048 | Author: 陈鹏 | Hits:

[ICQ-IM-ChatChatApp_based_on_java

Description: java聊天程序,支持QQ的用户图标,重编译后能用于其它操作系统,很好的一个原代码,吐血推荐-java chat program to support users of QQ icon can be re-compiled for other operating systems, a very good source, vomiting blood recommend!
Platform: | Size: 828416 | Author: | Hits:

[JSP/Java报表Java

Description: 用Java写的报表.功能如下: 0.内建网络打印,网络预览功能! 1.文件操作。包括url 指定的文件。 2.全功能打印支持。包括打印预览。 3.Undo 和 redo。 4.合并单元格。 5.Cell selection using the mouse or keyboards(快捷键支持)。 6.单元格高宽调整 。 7.丰富的前景刷支持,前景可以是单色,双色渐变,JPG,PNG,GIF图形 。 8.背景刷支持,前景可以是单色,双色渐变,JPG,PNG,GIF图形 。 9.每个单元格支持空心字体,各其他一般字体。 10.每个单元格可设置为只读。 11.每个单元格上下左右可分别高设置边框,边框线的宽度,颜色可调。 12.拖放操作。可在一个应用中的不同单元格拖放,也可在两个应用的之间进行拖放。支持剪切和COPY两种方式。 13.剪贴板功能。支持文本方式和全格式两种方式。剪贴也允许在两个应用之间进行。可以从EXCELL单元格中复制到本应用中。 14.单元格线,滚动条,行头,列头显示可选. 15.支持公式定义,公式定义采用?作标记,如?sum(A1:B1)。 16.数字格式可自由定义,如 12345678, 可自动化为 12,345,678.00 。 17.丰富的页脚页眉属性。具有以上3,4,5,6?,8,9,10,11,12,13,15,16,17各项功能。-use Java to write statements. Features are as follows : 0. Built-in network printing, network previews! 1. File manipulation. Including the url specified documents. 2. Print full-featured support. Including print preview. 3.Undo and redo. 4. The merger cells. 5.Cell selection using the mouse or keyboards (shortcuts support). 6. Cells width adjustment. 7. Brush rich prospects, prospects can be monochrome, color gradient, JPG, PNG, GIF graphics. 8. Background Brush support, prospects can be monochrome, color gradient, JPG, PNG, GIF graphics. 9. Each module supports Lattice hollow fonts, the other general fonts. 10. Each unit can be set to Georgia read. 11. Each module grid respectively above and below the high set frame, the frame line width, color adjustable. 12. Drag and drop. The applicat
Platform: | Size: 197632 | Author: 温厚 | Hits:

[Graph programImageTour1

Description: 实现几个图片合成成一个gif,并且在每一帧上加水印-synthesize several picture into a gif file, and watermark is added to each frame picture.
Platform: | Size: 61440 | Author: 相同 | Hits:

[JSPwebstart

Description: 系统运行时的截屏图:webstart_screen01.gif/webstart_screen02.gif。 安装使用前,请先查阅:help/help.html。 本系统的客户端浏览器仅支持IE6.0,其他浏览器如MyIE2/FireFox不能正确运行Java Applet或JScript,故无法正常使用本系统。特此说明-system running at the screen shots : webstart_screen01.gif/webstart_screen02.gif. Before the installation, inspection post : help/help.html. The system of the client browser supports only Internet Explorer 6.0, other browsers such as MyIE2/FireFox can not correctly run Java applet or JScript, it is impossible to normal use of the system. Hua
Platform: | Size: 433152 | Author: signme | Hits:

[JSP/Javadelineate-0.5

Description: Delineate is a tool for converting bitmap raster images to SVG (Scalable Vector Graphics) using AutoTrace or potrace. It displays SVG results using Apache Batik. Input formats are JPEG, PNG, GIF, BMP, TIFF, PNM, PBM, PGM, PPM, IFF,PCD, PSD, RAS. -Delineate is a tool for converting bitmap r Aster images to SVG (Scalable Vector Graphics) using AutoTrace or potrace. It displays SVG res ults using Apache Safari. Input formats are JPEG , PNG, GIF, BMP, TIFF, PNM, PBM, PGM, PPM, IFF, PCD, PSD, RAS.
Platform: | Size: 3621888 | Author: Jet Lan | Hits:

[JSP/Javaclasses6789

Description: jpg gif png 各种图片之间转换-jpg gif png conversion between various Photo
Platform: | Size: 5120 | Author: wf | Hits:

[JSP/JavajavaPlayer

Description: Java MP3 Player, Here s a list of features: - Reads, creates, updates, and removes id3v2.3 and id3v2.4 tags - Reads, creates, updates, and removes id3v1 tags - Extracts MPEG data such as bit rate, sample rate, channel mode, etc. - Calculates playing time of mp3 from mpeg information (no good w/VBR) - Can read and create Winamp styled playlists - Offers other utility classes such as MP3FileFilter and MP3Comparator - NullsoftID3GenreTable object keeps a list of genres for you and can automatically determine the id3v1 genre from an id3v2 string or the other way around
Platform: | Size: 140288 | Author: Li Tian | Hits:

[Picture Viewergif

Description: 从国外的一个网站上搞到的有关Gif的AnimatedGifEncoder的源码-From abroad got a site on the AnimatedGifEncoder source Gif
Platform: | Size: 17408 | Author: youyou | Hits:

[JSP/JavaPaint

Description: java画图源码,环境要求: JDK1.4以上版本 功能: 1.可拖拉式创建组件(目前包括按钮\文本框\图片组件) 2.可对组件进行选取\删除\复制\粘贴等动作 3.可进行两组件之间的连线 4.可在多组件之问交叉连 5.可创建多种形式的连线(目前包括无箭头\空心箭头\实心箭头) 6.可拖动组件位置 7.可拉框多选组件 8.按住CTRL键可多选 9.多选时按住CTRL键可拖动多个组件 10.拖动图柄可更改大小(各个角度的图柄更改方式不同) 11.可弹出右键菜单,并可具体组件定制相应菜单 12.画板自动调整大小 13.连线的位置随组件的位置而自动改变 14.插入指定图片(GIF/JPG) 15.新建\保存\打开文件 16.每个步聚的撤消/重做 17.软件国际化(见人说人话,见鬼说鬼话) 18.图片组件可更改图片 -err
Platform: | Size: 246784 | Author: 王刚 | Hits:

[JSP/JavaJava

Description: <正> 在这个充满图形、图像、动画、声音、影像的今天,我们开始意识到:随着多媒体时代的到来,计算机的功能已不局限于其高速运算的数据操作能力,它还可以利用声音、图形、图像等使程序生动起来。我们可以在自己的程序中放一幅图片,也可以在给客户的程序中放一幅他们的商标,当然也可以在程序运行时给用户播放—些美妙的声音……,所有的这—切,你也可以拥有的,本文将简单阐述 Java 编程中图形图像的运用。通过 Java 一些自含类包所提供的功能,我们就可以轻松进行强而有力的图形界面开发,比如我们可以用很简单的一条语句就能够获取图像资源或者绘出一个简单图形。闲话短说,现在就开始学习吧。图像的获取:首先,我们必须了解 Java 目前所支持的图像文件格式必须为‘.jpg’或‘.gif’,sun 公司选择这两种格式作为图片的支持格式主要是因为 jpg 和 gif 格式的压缩算法比较-...
Platform: | Size: 338944 | Author: hzh | Hits:

[JSP/Javajindutiao

Description: gif形式的进度条,多种多样的. gif形式的进度条,多种多样的.-gif form of progress bar, a wide range of. gif forms of progress bar, a wide range of.
Platform: | Size: 145408 | Author: lichao | Hits:

[androidGIFproject

Description: ANDROID系统程序源码,GIF动画图片DECODE,JAVA编写,实例可运行-ANDROID source system procedures, GIF animation picture DECODE, JAVA development, examples can be run
Platform: | Size: 179200 | Author: pys | Hits:

[Graph programgif

Description: java实现的gif类型的图片解析与合成功能-java implementation gif type image analysis and synthesis
Platform: | Size: 21504 | Author: 傅信诰 | Hits:

[JSP/Javacore-java

Description: JAVA核心技术卷I卷II源代码原书第八版机械工业出版社-core java volume I,volume IIsource code
Platform: | Size: 2413568 | Author: bowen | Hits:

[JSP/JavaGif Decoder

Description: gif decoder for android
Platform: | Size: 19456 | Author: Mr.Horse | Hits:
« 12 3 4 5 6 »

CodeBus www.codebus.net